home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 SRC / Mac / Modules / cm / cmscan.py < prev    next >
Text File  |  1996-04-12  |  2KB  |  67 lines

  1. # Scan an Apple header file, generating a Python file of generator calls.
  2.  
  3. import addpack
  4. addpack.addpack(':tools:bgen:bgen')
  5. from scantools import Scanner
  6. from bgenlocations import TOOLBOXDIR
  7.  
  8. LONG = "Components"
  9. SHORT = "Cm"
  10.  
  11. def main():
  12.     input = "Components.h"
  13.     output = SHORT + "gen.py"
  14.     defsoutput = TOOLBOXDIR + LONG + ".py"
  15.     scanner = MyScanner(input, output, defsoutput)
  16.     scanner.scan()
  17.     scanner.close()
  18.     print "=== Done scanning and generating, now importing the generated code... ==="
  19.     exec "import " + SHORT + "support"
  20.     print "=== Done.  It's up to you to compile it now! ==="
  21.  
  22. class MyScanner(Scanner):
  23.  
  24.     def destination(self, type, name, arglist):
  25.         classname = "Function"
  26.         listname = "functions"
  27.         if arglist:
  28.             t, n, m = arglist[0]
  29.             #
  30.             # FindNextComponent is a special case, since it call also be called
  31.             # with None as the argument. Hence, we make it a function
  32.             #
  33.             if t == "Component" and m == "InMode" and name != "FindNextComponent":
  34.                 classname = "Method"
  35.                 listname = "c_methods"
  36.             elif t == "ComponentInstance" and m == "InMode":
  37.                 classname = "Method"
  38.                 listname = "ci_methods"
  39.         return classname, listname
  40.  
  41.     def makeblacklistnames(self):
  42.         return [
  43.             # "GetComponentInfo"  # XXXX I dont know how the Handle args are expected...
  44.             ]
  45.  
  46.     def makeblacklisttypes(self):
  47.         return [
  48.             "ResourceSpec",
  49.             "ComponentResource",
  50.             "ComponentPlatformInfo",
  51.             "ComponentResourceExtension",
  52.             "ComponentPlatformInfoArray",
  53.             "ExtComponentResource",
  54.             "ComponentParameters",
  55.             
  56.             "ComponentRoutineUPP",
  57.             ]
  58.  
  59.     def makerepairinstructions(self):
  60.         return [
  61.             ([('ComponentDescription', 'looking', 'OutMode')],
  62.              [('ComponentDescription', '*', 'InMode')]),
  63.             ]
  64.             
  65. if __name__ == "__main__":
  66.     main()
  67.